/*
	Funcion ASCENSION-COLINAS (problema)
		devuelve estado que es un maximo local
		entradas: problema, un problema
		variables locales:	actual, un nodo
							vecino, un nodo
	actual <- HACER-NODO (ESTADO-INICIAL[problema])
	bucle hacer
		vecino <- sucesor de valor mas alto de actual
		si VALOR[vecino] <= VALOR[actual] entonces devolver ESTADO[actual]
		actual <- vecino
	*/
	
	public Camino ascensoColinas(String ruta, Camino sol){
		Camino actual=sol, vecino, res=null;
		LectorImagenes li=new LectorImagenes();
		li.getMapaGS(ruta);
		int width = li.getImagen().getWidth(null);
		int height = li.getImagen().getHeight(null);
		boolean sigue=true;
		Random rd = new Random();
		int posX, posY, max=Math.max(width, height), r;
		Posicion p;
		while(sigue){
			posX=rd.nextInt(width);
			posY=rd.nextInt(height);
			p=new Posicion(posX,posY);
			r=rd.nextInt(max/2);
			System.out.println("Eliminando a partir de la posicion " + p.toString() + " con un radio " + r);
			actual.eliminaCirculo(p, (long)r);
			vecino=restaurarSolucion(actual, ruta);
			if (vecino.getC() <= actual.getC()){
				res=actual;
				sigue=false;
			}
			actual=vecino;
		}
		return res;
	}